const Mongo = require("@mongodb/me/index")
const BaseServer = require("../base/baseServer")

class Server extends BaseServer{

	constructor() {
		super()
	}

	/**
	 * 添加
	 * @param ctx 环境上下文
	 * @returns {Promise<*|IDBValidKey|void>}
	 */
	static async add (ctx) {
		return await Mongo.addWork(ctx.vals)
	}

	/**
	 * 修改
	 * @param ctx 环境上下文
	 * @returns {Promise<*|IDBValidKey|void>}
	 */
	static async update (ctx) {
		return await Mongo.updateWork(ctx.vals)
	}

	/**
	 * 删除
	 * @param ctx 环境上下文
	 * @returns {Promise<*|IDBValidKey|void>}
	 */
	static async remove (ctx) {
		return await Mongo.removeWork(ctx.vals.id)
	}

	/**
	 * 获取列表
	 * @param ctx 环境上下文
	 * @returns {Promise<*>}
	 */
	static async all (ctx) {
		return await Mongo.getWorks()
	}

	/**
	 * 详情
	 * @param ctx 环境上下文
	 * @returns {Promise<*>}
	 */
	static async detail (ctx) {
		return await Mongo.findWorkDetail(ctx.vals.id)
	}

	/**
	 * 添加到回收站
	 * @param ctx 环境上下文
	 * @returns {Promise<*>}
	 */
	static async dustbin_push (ctx) {
		return await this.mongo.work_dustbin_push(ctx.vals.id)
	}

	/**
	 * 从回收站还原
	 * @param ctx 环境上下文
	 * @returns {Promise<*>}
	 */
	static async dustbin_pop (ctx) {
		return await this.mongo.work_dustbin_pop(ctx.vals.id)
	}

	/**
	 * 获取回收站所有数据
	 * @param ctx 环境上下文
	 * @returns {Promise<*>}
	 */
	static async dustbin_all () {
		return await this.mongo.work_findDustbin()
	}
}

Server.mongo = Mongo

module.exports = Server
